load("C:/Users/nikos/Desktop/SAE_proj_data.RData")
library(microbenchmark)
library(parallel)
library(mvtnorm)
Rcpp::sourceCpp("C:/Users/nikos/Desktop/SAE/R/SamplingWithC.cpp")
# Alternative 1.0 ###############################################################################
# drawing indices instead of directly drawing residuals
bootstrap.residuals1.0 <-
function(n_boot1,
sample_size,
num_residuals,
residuals) {
bootstap_indices <-
sample(
x = 1:num_residuals,
size = sample_size * n_boot1,
replace = T
)
matrix(residuals[bootstap_indices], ncol = n_boot1)
}
# Alternative 1.1 ###############################################################################
bootstrap.residuals1.1 <-
function(n_boot1,
sample_size,
num_residuals,
residuals) {
bootstap_indices <-
sample(
x = seq.int(from = 1, to = num_residuals),
size = sample_size * n_boot1,
replace = T
)
matrix(residuals[bootstap_indices], ncol = n_boot1)
}
# Alternative 1.2 ###############################################################################
bootstrap.residuals1.2 <-
function(n_boot1,
sample_size,
num_residuals,
residuals) {
bootstap_indices <- rddrawIndicesC(num_residuals, sample_size * n_boot1)
matrix(residuals[bootstap_indices], ncol = n_boot1)
}
# Alternative 1.3 ###############################################################################
# drawing indices separately, but implementing both steps in C++
bootstrap.residuals1.3 <-
function(n_boot1,
sample_size,
num_residuals,
residuals) {
return(rddrawIndicesC2(num_residuals, sample_size * n_boot1, residuals))
}
# Alternative 2 ###############################################################################
# drawing directly from the residuals with R
bootstrap.residuals2 <-
function(n_boot1,
sample_size,
num_residuals,
residuals) {
matrix(sample(
x = residuals,
size = sample_size * n_boot1,
replace = T
),
ncol = n_boot1)
}
mbm <- microbenchmark(
alt1.0 = bootstrap.residuals1.0(
n_boot1 = 250,
sample_size = n_obs_census,
num_residuals = n_obs_survey,
residuals = inference_survey$errorterm$residuals
),
alt1.1 = bootstrap.residuals1.1(
n_boot1 = 250,
sample_size = n_obs_census,
num_residuals = n_obs_survey,
residuals = inference_survey$errorterm$residuals
),
alt1.2 = bootstrap.residuals1.2(
n_boot1 = 250,
sample_size = n_obs_census,
num_residuals = n_obs_survey,
residuals = inference_survey$errorterm$residuals
),
alt1.3 = bootstrap.residuals1.3(
n_boot1 = 250,
sample_size = n_obs_census,
num_residuals = n_obs_survey,
residuals = inference_survey$errorterm$residuals
),
alt2 = bootstrap.residuals2(
n_boot1 = 250,
sample_size = n_obs_census,
num_residuals = n_obs_survey,
residuals = inference_survey$errorterm$residuals
),
times = 10
)
mbm
# option 1.1 seems to be a bit faster
mbm <- microbenchmark(
alt1.1 = bootstrap.residuals1.1(
n_boot1 = 250,
sample_size = n_obs_census,
num_residuals = n_obs_survey,
residuals = inference_survey$errorterm$residuals
),
alt1.2 = bootstrap.residuals1.2(
n_boot1 = 250,
sample_size = n_obs_census,
num_residuals = n_obs_survey,
residuals = inference_survey$errorterm$residuals
),
times = 4
)
mbm
mbm <- microbenchmark(
alt1.1 = bootstrap.residuals1.1(
n_boot1 = 250,
sample_size = n_obs_census,
num_residuals = n_obs_survey,
residuals = inference_survey$errorterm$residuals
),
alt2 = bootstrap.residuals2(
n_boot1 = 250,
sample_size = n_obs_census,
num_residuals = n_obs_survey,
residuals = inference_survey$errorterm$residuals
),
times = 10
)
mbm
# option 2 seems to be a bit faster
mbm <- microbenchmark(
alt1.3 = bootstrap.residuals1.3(
n_boot1 = 250,
sample_size = n_obs_census,
num_residuals = n_obs_survey,
residuals = inference_survey$errorterm$residuals
),
alt2 = bootstrap.residuals2(
n_boot1 = 250,
sample_size = n_obs_census,
num_residuals = n_obs_survey,
residuals = inference_survey$errorterm$residuals
),
times = 10
);mbm
# option 1.3 seems to be faster
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.